Providing global metadata in a cluster computing environment

ABSTRACT

First and second data partitions that include first and second portions of data, respectively, from a first of a plurality of data streams are received. A first storage location of a distributed storage system, a first set of metadata for the first of the plurality of data streams is stored. A first and second digest is created for the first and second data partition, respectively, wherein each of the first and second digests include a data structure that points to the first storage location. The first and second data partitions including the first and second digest, respectively, is transmitted to one or more nodes of a cluster computing environment, wherein the one or more nodes are capable of accessing the first storage location via the data structure that points to the first storage location, and wherein the accessing of the first storage location provides processing information. The first and second data partition are processed using the processing information.

FIELD OF THE INVENTION

The present invention relates generally to the field of data streamanalysis in cluster computing environments, and more particularlyproviding, for each data partition of a data stream, a digest thatpoints to globally accessible metadata.

SUMMARY

Embodiments of the present invention provide systems, methods, andcomputer program products for providing global metadata in a clustercomputing environment. First and second data partitions that includefirst and second portions of data, respectively, from a first of aplurality of data streams are received. A first storage location of adistributed storage system, a first set of metadata for the first of theplurality of data streams is stored. A first and second digest iscreated for the first and second data partition, respectively, whereineach of the first and second digests include a data structure thatpoints to the first storage location. The first and second datapartitions including the first and second digest, respectively, istransmitted to one or more nodes of a cluster computing environment,wherein the one or more nodes are capable of accessing the first storagelocation via the data structure that points to the first storagelocation, and wherein the accessing of the first storage locationprovides processing information. The first and second data partition areprocessed using the processing information.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a cluster computing environment, inaccordance with an embodiment of the present invention;

FIG. 2A is a block diagram illustrating a data structure of a resilientdistributed data set (RDD), in accordance with an embodiment of thepresent invention;

FIG. 2B is a block diagram illustrating a digest of an RDD, inaccordance with an embodiment of the present invention;

FIG. 3 is a block diagram illustrating a process for generatingdiscretized stream (DStream) from one data stream, in a clustercomputing environment, in accordance with an embodiment of the presentinvention;

FIG. 4 is a block diagram of nodes in a cluster computing environment,in accordance with an embodiment of the present invention;

FIG. 5 is a flowchart illustrating operational steps for generating adigest for a data partition by a cluster computing environment asillustrated in FIGS. 1 and 4, in accordance with an embodiment of thepresent invention;

FIG. 6 is a flowchart illustrating operational steps for finalizingglobal metadata by a cluster computing environment as illustrated inFIGS. 1 and 4, in accordance with an embodiment of the presentinvention;

FIG. 7 is a block diagram of internal and external components of thecomputer systems of FIG. 1, in accordance with an embodiment of thepresent invention;

FIG. 8 depicts a cloud computing environment, in accordance with anembodiment of the present invention; and

FIG. 9 depicts abstraction model layers, in accordance with anembodiment of the present invention.

DETAILED DESCRIPTION

A data stream is a sequence of data made available over a period of timeto a data management system, such as a cluster computing environment.Examples of data streams can include sensor data (e.g., temperaturemeasurements, location information, etc.), real time image data (e.g.,satellite images, surveillance images, etc.), as well as internet andweb traffic (e.g., Transmission Control Protocol and Internet Protocol(TCP/IP) packets, search queries, user web page navigation, etc.).Typically, more than one data stream can be processed by a clustercomputing environment, where each data stream can be made available tothe cluster computing environment at varying rates and can includevarying data types.

A cluster computing environment can receive, process, and analyze datafrom incoming data streams to aid users (i.e., an enterprise, anorganization, etc.) in real time decision making. For example, a bankinginstitution can receive and process data from incoming data streams(e.g., transaction data, etc.), and analyze the processed data to detectfraudulent activity. A cluster computing environment can analyzeprocessed data from incoming data streams with applications that canperform data analytics, data mining, and other stream analyticcapabilities. For example, applications can process queries andalgorithms, such as machine learning algorithms and graph processingalgorithms, on processed data from incoming data streams, which areexpressed by functions and operations (e.g., map, reduce, join, window,etc.). Analyzed data can be stored in one or more shared storageresources of the cluster computing environment.

Cluster computing environments may differ from other data managementsystems, such as database management systems, because cluster computingenvironments may not control a rate in which the data of incoming datastreams are made available (i.e., received). In comparison, a databasemanagement system may control a rate in which the data is received(i.e., a rate in which data is read from storage resources).Accordingly, the database management system may not be faced with anissue of missing or lost data as the database management system executesqueries, whereas the if data is missing or lost as the cluster computingenvironment analyzes data from a data stream, then the results of theanalysis may be affected and have an undesirable effect on decisionsmade by users of the cluster computing environment.

A cluster computing environment, such as a Spark® v1.6.0 streamingcomputing environment available from Apache Software Foundation, cananalyze data from data streams by processing the data into batches ofdata, or resilient distributed datasets (RDDs). RDDs can be processed bythe cluster computing environment, may be operated in parallel by nodesof a cluster. Each RDD may contain serialized data partitions that canbe allocated to nodes of a Spark® streaming computing environment forparallel computing. Typically in a Spark® streaming computingenvironment, a node that is allocated a data partition has access toserialization information for the data partition only, but notserialization information for other data partitions that were allocatedto other nodes. Furthermore, global metadata, such as informationregarding a data stream from which each partition originates, such as aname, a location, an owner, a size, is not available to components of aSpark® streaming computing environment. Global metadata can be useful toa cluster computing environment in instances where more than one datastream is processed and analyzed. Accordingly, an additional pointerdata structure pointing to global metadata, can be provided in each datapartition, such that the global metadata, and additional processinginformation are available as a shared variable area for components of acluster computing environment, such as a Spark® streaming computingenvironment.

Embodiments of the present invention provide methods, systems, andcomputer program products for generating a digest for each datapartition in an RDD. Embodiments of the invention can store informationreferenced by each digest in a shared variable area of a clustercomputing environment, such as a Spark® streaming computing environment,such that each node in the Spark® streaming computing environment mayaccess information stored in the shared variable area.

FIG. 1 is a block diagram of cluster computing environment 100, inaccordance with an embodiment of the present invention. In thisembodiment, cluster computing environment 100 is an open clustercomputing framework, such as a Spark® streaming computing environment.Cluster computing environment 100 can execute Spark® applications toprocess and analyze data. A “Spark® application,” as used herein, refersto a job or a sequence of jobs involving a self-contained computationthat executes user-supplied software code to compute a result. A “job,”as used herein, refers to a portion of software code that reads data,performs a computation or transformation on the data, and writes outputdata. Jobs can be divided into tasks (e.g., map, reduce, etc.), based oncomputational boundaries and/or limits of each job, where a task is aunit of work within a job that is performed on a portion of input data(e.g., a data partition), as described in greater detail below.

Cluster computing environment 100 includes cluster computing system 150and nodes 140, which are connected via network 120. Cluster computingsystem 150 and nodes 140 can be desktop computers, laptop computers,specialized computer servers, or any other computer systems known in theart. In certain embodiments, cluster computing system 150 and nodes 140represent computer systems utilizing clustered computers and componentsto act as a single pool of seamless resources when accessed throughnetwork 120. For example, such embodiments may be used in data center,cloud computing, storage area network (SAN), and network attachedstorage (NAS) applications. In certain embodiments, cluster computingsystem 150 and nodes 140 represent virtual machines. In general, clustercomputing system 150 and nodes 140 are representative of any electronicdevices, or combination of electronic devices, capable of executingmachine-readable program instructions, in accordance with an embodimentof the present invention, as described in greater detail with regard toFIG. 7. In other embodiments, cluster computing system 150 and nodes 140may be implemented in a cloud computing environment, as described ingreater detail with regard to FIGS. 8 and 9.

Network 120 can be, for example, a local area network (LAN), a wide areanetwork (WAN) such as the Internet, or a combination of the two, andinclude wired, wireless, or fiber optic connections. In general, network120 can be any combination of connections and protocols that willsupport communications between cluster computing system 150 and nodes140, in accordance with an embodiment of the invention.

Data streams 110 represent one or more sequences of data made availableover a period of time to cluster computing environment 100. Data streams110 can originate from one or more data sources that provide varyingtypes of data (e.g., sensor data, image data, internet/web traffic data,etc.) at varying rates. For example, data streams 110 can includetemperature sensor data provided by a temperature measurement devicethat transmits temperature sensor data to cluster computing environment100 at regular intervals, as well as search queries receivedasynchronously by a search engine that transmits the search queries tocluster computing environment 100 as the search queries are received.

Distributed storage system 130 represents one or more storagerepositories configured for shared storage access for nodes 140 andcluster computing system 150. In this embodiment, distributed storagesystem 130 may be a fault-tolerant storage system, such that eachstorage component of distributed storage system 130 (e.g., a servercomputer) includes a portion of file system data. Distributed storagesystem 130 can provide high throughput access to application data, suchthat Spark® applications can have streaming access to the applicationdata. In this embodiment, distributed storage system 130 interfaces witha Spark® streaming computing environment. For example, distributedstorage system 130 may include: Hadoop® Distributed File System (HDFS),MapR® File System (MapR-FS), Cassandra®, OpenStack Swift, Amazon® S3,Kudu, or combinations thereof. All trademarks used herein are theproperty of their respective owners.

Cluster computing system 150 represents a Spark® platform that receivesdata from data streams 110, processes the data streams, and transmitsthe processed data to nodes 140, as well as manages and executes Spark®applications. In this embodiment, cluster computing system 150 includesseveral application programming interfaces (APIs), such as clustermanager 152, Spark® Core API 153, and Spark® Streaming API 154.

Cluster manager 152 represents program functionality for allocating andmanaging resources and/or tasks for each of nodes 140 to perform Spark®applications. For example, cluster manager 152 can interact with a JavaVirtual Machine (JVM) in one or more nodes 140 to manage and allocateresources and/or tasks.

Spark® Core API 153 represents program functionality for distributedtask dispatching, task scheduling, and basic input/output (I/O)functionalities for Spark® applications. Spark® Core API 153 is theunderlying general execution engine for cluster computing system 150that all other functionality is built on top of (e.g., Spark® StreamingAPI 154). Spark® Core API 153 provides in-memory computing capabilitiesto deliver high-speed throughput of data from data streams 110, ageneralized execution model to support a wide variety of applications,as well as to support Java®, Scala®, and Python® APIs for ease ofdevelopment.

Spark® Streaming API 154 represents program functionality for loadbalancing, unification of streaming, batch, and interactive workloads,failure recovery, and advanced data analytics, such as machine learningand Structured Query Language (SQL®) queries. Spark® Streaming API 154designates one of nodes 140 to buffer data from data streams 110 intobatches, as described in greater detail with regard to FIG. 2. In thisembodiment, Spark® Streaming API 154 leverages functions of Spark® CoreAPI 153 and relies on batches of data from data streams 110 to writeprocessed data stream 110 information to a file system of distributedstorage system 130. In this embodiment, Spark® Streaming API 154 canmaintain state information for a particular Spark® application (i.e.,all stored information at a given time, to which a Spark® applicationhas access) based on data from data streams 110. Spark® Streaming API154 may be configured to perform window operations, such that adeveloper using cluster computing environment 100 can specify a timeinterval and execute Spark® applications on processed data that is madeavailable within the time interval. In this embodiment, Spark® StreamingAPI 154 creates an additional data structure, or a digest, that includesa pointer to global metadata, and other data partition information, foreach data partition processed in cluster computing environment 100, asdescribed in greater detail below.

Nodes 140 represent platforms in a computer cluster that allocateresources to perform Spark® applications. In this embodiment, nodes 140may include “n” number of nodes 140, as illustrated by nodes 140 n,where the cluster of nodes 140 are viewed as a single computer systemmanaged by cluster manager 152. For example, a computer cluster incluster computing environment 100 can include “n” number of nodes 140,where “n” is 10 nodes 140 (e.g., nodes 140 a-j, not depicted). Each ofnodes 140 may be configured for specialized and/or dedicated functionsand include a number of JVMs and storage resources. In one embodiment,cluster computing system 150 can be a master node 140 that designates areceiving node 140 a to buffer data from data streams 110 into batches,as described in greater detail below.

Managers 142 represent JVMs that manage received requests from clustermanager 152 for one or more resources to perform distributed computingtasks. In this embodiment, managers 142 are configured to allocatememory resources (e.g., memory 145 a, and memory 145 n, respectively)and processing unit resources (e.g., threads in thread pool 144 a, andthreads in thread pool 144 n, respectively) as described in greaterdetail below.

Manager process 143 a and manager process 143 n represent JVMs toperform tasks for an individual Spark® application and store outputdata. For example, manager process 143 a is spawned and managed bymanager 142 a, and is configured to perform all tasks for a first Spark®application. In another example, manager process 143 n is spawned andmanaged by manager 142 n, and is configured to perform all tasks for asecond Spark® application. Typically, Spark® applications can beisolated from each other, which may be beneficial for scheduling tasksfor each Spark® application and beneficial for managing tasks for eachof manager processes 143 a and 143 n. However, because Spark®applications are typically considered isolated, data for each Spark®application may not be shared without writing the data to an externalstorage system (e.g., distributed storage system 130). In contrast, inthis embodiment, global metadata and additional processing informationis available as a shared variable area, such that Spark® applicationsare no longer isolated.

Thread pool 144 and thread pool 144 n represent collections of threadsthat can be allocated by manager 142 a and manager 142 for tasksperformed by manager process 143 a and manager process 143 n,respectively. In this embodiment, thread pools 144 consist of any numberof threads that can be allocated to perform any number of tasks inparallel. For example, manager process 143 a may be assigned to performfive tasks for a first Spark® application, such that manager 142 aallocates five threads from thread pool 144 a, where each of the fivethreads from thread pool 144 a are dedicated to perform one of the fivetasks.

Memories 145 represent computer-readable storage media for nodes 140,respectively. In this embodiment, each memory 145 includes random accessmemory (RAM) and cache memory. In general, a memory 145 can include anysuitable volatile or non-volatile computer-readable storage media thatcan store data while its respective manager process 143 performs tasks.

FIG. 2A is a block diagram illustrating a data structure of RDD 200, inaccordance with an embodiment of the present invention. The term,“resilient distributed dataset,” as used herein, is a basic abstractionin a Spark® streaming computing environment (e.g., cluster computingenvironment 100) representing a sequence of data, such that developersand programmers can perform in-memory computations on large clusters ina fault-tolerant manner. For example, RDD 200 can include serializabledata partitions (e.g., partition 202), where each data partitionreferences a subset, or a portion, of data from one data stream 110. Adata partition of RDD 200, such as partition 202, can be transmitted toa plurality of nodes 140 for distributed parallel processing In thisembodiment, partition 202 in RDD 200 includes digest 204 provided bySpark® Streaming API 154, as described in greater detail with regard toFIG. 2B. In another embodiment, RDD 200 can include more than one datapartition, where each of the more than one data partitions include arespective digest.

FIG. 2B is a block diagram illustrating digest 204 of RDD 200, inaccordance with an embodiment of the present invention. In thisembodiment, Spark® Streaming API 154 creates digest 204 which includes apointer to global metadata 206 and other partition information 208 forpartition 202. Other partition information 208 for partition 202 caninclude: serialization information for partition 202, an encode and/or adecode method for partition 202, and other information for the partition202. In one embodiment, a node 140 stores partition 202 and digest 204in its memory 145, such that the node 140 can access digest 204 toreference necessary information during task completion, such asinformation that identifies one of data streams 110 that RDD 200originates from, and information that identifies an offset of partition202.

The pointer to global metadata 206 points to a storage locationdistributed storage system 130 containing global metadata 210. In thisembodiment, global metadata 210 is metadata for a data stream 110 source(e.g., a file stream) that RDD 200 originates from, where globalmetadata 210 includes: a file name, a file location, a file owner, afile size, and other data stream 110 source information. Global metadata210 can be a shared variable area in distributed storage system 130,such that each of nodes 140 having access to the shared variable areacan read from and/or write to it.

FIG. 3 is a block diagram illustrating a process for generatingdiscretized stream (DStream) 308 from one data stream 110 in clustercomputing environment 100, in accordance with an embodiment of thepresent invention. In this embodiment, cluster computing system 150processes one data stream 110 to generate DStream 308 including RDD 200a and RDD 200 b. The term, “DStream” as used herein, refers to a basicabstraction in a Spark® streaming computing environment (i.e., clustercomputing environment 100), where DStream 308 can be represented as asequence of RDDs 200 (e.g., RDD 200 a and RDD 200 b).

Data from a data stream 110 can buffered into batches by clustercomputing system 150. For example, cluster computing system 150 or oneof nodes 140 can buffer data from the data stream 110 into batchinterval 304 a and batch interval 304 b. The term, “batch interval,” asused herein refers to a predefined time interval at which clustercomputing system 150 buffers one data stream 110 into a batch. Forexample, a predefined time interval can be one second, such that clustercomputing system 150 buffers data from one data stream 110 into a batchevery second. Typically, a predefined time interval for buffering datafrom data stream 110 into a batch can be based on: a buffer size, timeto process the buffered data, likelihood of an error occurring thatrequires a resend of the data. A batch interval size, or predefined timeinterval can be adjusted dynamically based on error rate or datathroughput. Accordingly, batch interval 304 a represents a first batchbuffered at a first time (e.g., one second from the data stream 110processing starting time), and batch interval 304 b represents a secondbatch buffered at a second time (e.g., two seconds from the data stream110 processing starting time).

In this embodiment, batch interval 304 a and batch interval 304 binclude block intervals 305 a and 305 b, and block intervals 305 c and305 d, respectively. The term, “block interval,” as used herein refersto a portion of data from the one data stream 110 that is separated by apredefined time interval that is less than a predefined time intervalfor a batch interval. For example, a predefined time interval can be 500milliseconds, such that cluster computing system 150 separates portionsof the one data stream 110 every 500 milliseconds. Accordingly, blockinterval 305 a represents a first portion of data from the one datastream 110 generated at a first time (e.g., 500 milliseconds from thedata stream 110 processing starting time), block interval 305 brepresents a second portion of data from the one data stream 110generated at a second time (e.g., 1000 milliseconds from the data stream110 processing starting time), block interval 305 c represents a thirdportion of data from the one data stream 110 generated at a third time(e.g., 1500 milliseconds from the data stream 110 processing startingtime), and block interval 305 d represents a fourth portion of data fromthe one data stream 110 generated at a fourth time (e.g., from the datastream 110 processing starting time).

Cluster computing system 150 may define DStream 308 as a continuousstream of data buffered into batch interval 304 a and batch interval 304b, such that block intervals 305 a, 305 b, 305 c, and 305 d are definedas partitions 202 a, 202 b, 202 c, and 202 d, respectively. Aspreviously described, Spark® Streaming API 154 creates a digest for eachof partitions 202 a-d, which are represented by digests 204 a-d. Clustercomputing system 150 generates RDDs 200 a and 200 b, such that each ofRDDs 200 a and 200 b can be processed using operations (e.g., map,reduce, reduceByKey, join, window, etc.). The results from performingoperations on RDDs 200 a and 200 b can be returned in batches, andstored in distributed storage system 130 for subsequent analysis, reportand/or dashboard generation, or sending event based alerts.

FIG. 4 is a block diagram of nodes 140 a-c in cluster computingenvironment 100, in accordance with an embodiment of the presentinvention. In this embodiment, node 140 a is a receiving node thatallocates a receiving thread from thread pool 144 a to receive data froma data stream 110, such that data from the data stream 110 is streaminginto the receiving thread in node 140 a. For a first batch interval,such as batch interval 304, node 140 a can buffer the received data forthe first batch interval to node 140 b and node 140 c. Node 140 atransmits block interval 305 a to both nodes 140 b and 140 c, where node140 b processes block interval 305 a as partition 202 a that includesdigest 204 a, and where node 140 c stores block interval 305 a in memory145 c to provide data availability and resiliency across clustercomputing environment 100. Similarly, Node 140 a transmits blockinterval 305 b to both nodes 140 b and 140 c, where node 140 a processesblock interval 305 b as partition 202 b that includes digest 204 b, andwhere node 140 b stores block interval 305 b in memory 145 b to providedata availability and resiliency across cluster computing environment100.

In this embodiment, digests 204 a is stored in memory 145 a and digest204 b is stored in memory 145 b. As previously described, each ofdigests 204 a and 204 b includes one pointer to global metadata 206,which points to a storage location in distributed storage system 130containing global metadata 210. Node 140 b may process partition 202 ausing digest 204 a including other partition information 208 forpartition 202 a stored in memory 145 a, and using global metadata 210stored in distributed storage system 130. Similarly, node 140 c mayprocess partition 202 b using digest 204 b including other partitioninformation 208 for partition 202 b stored in memory 145 c, and usingglobal metadata 210 stored in distributed storage system 130.Accordingly, both nodes 140 b and 140 c can process in parallel,partition 202 b and 202 a, respectively, and both nodes 140 b and 140 cmay access a shared variable area in distributed storage system 130containing global metadata to identify a name of data stream 110 thatpartitions 202 a and 202 b originate, a location of data stream 110, anowner of data stream 110, a size of data stream 110, and other datastream 110 information.

FIG. 5 is a flowchart illustrating operational steps for generating adigest for a respective partition by cluster computing environment 100as illustrated in FIGS. 1 and 4, in accordance with an embodiment of thepresent invention. Data from data stream 110 is received (steps 502).The data from data stream 110 is buffered into batch interval 304 aincluding block interval 305 a and block interval 305 b (step 504).Generate RDD 200 a from batch interval 304 a (step 506). Generatepartition 202 a from block interval 305 a and partition 202 b from blockinterval 305 b (step 508). Generate digest 204 a for partition 202 a anddigest 204 b for partition 202 b (step 510).

FIG. 6 is a flowchart illustrating operational steps for finalizingglobal metadata 210 by cluster computing environment 100 as illustratedin FIGS. 1 and 4, in accordance with an embodiment of the presentinvention. Each of partitions 202 a and 202 b are processed in parallelby nodes 140 (step 602). The results from processing partitions 202 aand 202 b are stored in distributed storage system 130 (step 604).Global metadata 210 is finalized, such that portions of global metadata210 that are no longer required by cluster computing environment 100 areremoved (step 606).

FIG. 7 is a block diagram of internal and external components of acomputer system 700, which is representative the computer systems ofFIG. 1, in accordance with an embodiment of the present invention. Itshould be appreciated that FIG. 7 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Ingeneral, the components illustrated in FIG. 7 are representative of anyelectronic device capable of executing machine-readable programinstructions. Examples of computer systems, environments, and/orconfigurations that may be represented by the components illustrated inFIG. 7 include, but are not limited to, personal computer systems,server computer systems, thin clients, thick clients, laptop computersystems, tablet computer systems, cellular telephones (e.g., smartphones), multiprocessor systems, microprocessor-based systems, networkPCs, minicomputer systems, mainframe computer systems, and distributedcloud computing environments that include any of the above systems ordevices.

Computer system 700 includes communications fabric 702, which providesfor communications between one or more processors 704, memory 706,persistent storage 708, communications unit 712, and one or moreinput/output (I/O) interfaces 714. Communications fabric 702 can beimplemented with any architecture designed for passing data and/orcontrol information between processors (such as microprocessors,communications and network processors, etc.), system memory, peripheraldevices, and any other hardware components within a system. For example,communications fabric 702 can be implemented with one or more buses.

Memory 706 and persistent storage 708 are computer-readable storagemedia. In this embodiment, memory 706 includes random access memory(RAM) 516 and cache memory 718. In general, memory 706 can include anysuitable volatile or non-volatile computer-readable storage media.Software is stored in persistent storage 708 for execution and/or accessby one or more of the respective processors 704 via one or more memoriesof memory 706.

Persistent storage 708 may include, for example, a plurality of magnetichard disk drives. Alternatively, or in addition to magnetic hard diskdrives, persistent storage 708 can include one or more solid state harddrives, semiconductor storage devices, read-only memories (ROM),erasable programmable read-only memories (EPROM), flash memories, or anyother computer-readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 708 can also be removable. Forexample, a removable hard drive can be used for persistent storage 708.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage708.

Communications unit 712 provides for communications with other computersystems or devices via a network (e.g., network 120). In this exemplaryembodiment, communications unit 712 includes network adapters orinterfaces such as a TCP/IP adapter cards, wireless Wi-Fi interfacecards, or 3G or 4G wireless interface cards or other wired or wirelesscommunication links. The network can comprise, for example, copperwires, optical fibers, wireless transmission, routers, firewalls,switches, gateway computers and/or edge servers. Software and data usedto practice embodiments of the present invention can be downloadedthrough communications unit 712 (e.g., via the Internet, a local areanetwork or other wide area network). From communications unit 712, thesoftware and data can be loaded onto persistent storage 708.

One or more I/O interfaces 714 allow for input and output of data withother devices that may be connected to computer system 700. For example,I/O interface 714 can provide a connection to one or more externaldevices 720, such as a keyboard, computer mouse, touch screen, virtualkeyboard, touch pad, pointing device, or other human interface devices.External devices 720 can also include portable computer-readable storagemedia such as, for example, thumb drives, portable optical or magneticdisks, and memory cards. I/O interface 714 also connects to display 722.

Display 722 provides a mechanism to display data to a user and can be,for example, a computer monitor. Display 722 can also be an incorporateddisplay and may function as a touch screen, such as a built-in displayof a tablet computer.

Referring now to FIG. 8, illustrative cloud computing environment 50 isdepicted. As shown, cloud computing environment 50 comprises one or morecloud computing nodes 10 with which local computing devices used bycloud consumers, such as, for example, personal digital assistant (PDA)or cellular telephone 54A, desktop computer 54B, laptop computer 54C,and/or automobile computer system 54N may communicate. Nodes 10 maycommunicate with one another. They may be grouped (not shown) physicallyor virtually, in one or more networks, such as Private, Community,Public, or Hybrid clouds as described hereinabove, or a combinationthereof. This allows cloud computing environment 50 to offerinfrastructure, platforms and/or software as services for which a cloudconsumer does not need to maintain resources on a local computingdevice. The types of computing devices 54A-N shown in FIG. 9 areintended to be illustrative only and that cloud computing nodes 10 andcloud computing environment 50 can communicate with any type ofcomputerized device over any type of network and/or network addressableconnection (e.g., using a web browser).

Referring now to FIG. 9, a set of functional abstraction layers providedby cloud computing environment 50 (FIG. 8) is shown. The components,layers, and functions shown in FIG. 9 are intended to be illustrativeonly and embodiments of the invention are not limited thereto. Asdepicted, the following layers and corresponding functions are provided:

Hardware and software layer 60 includes hardware and softwarecomponents. Examples of hardware components include: mainframes 61; RISC(Reduced Instruction Set Computer) architecture based servers 62;servers 63; blade servers 64; storage devices 65; and networks andnetworking components 66. In some embodiments, software componentsinclude network application server software 67 and database software 68.

Virtualization layer 70 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers71; virtual storage 72; virtual networks 73, including virtual privatenetworks; virtual applications and operating systems 74; and virtualclients 75.

In one example, management layer 80 may provide the functions describedbelow. Resource provisioning 81 provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment. Metering and Pricing 82provide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal 83 provides access to the cloud computing environment forconsumers and system administrators. Service level management 84provides cloud computing resource allocation and management such thatrequired service levels are met. Service Level Agreement (SLA) planningand fulfillment 85 provide pre-arrangement for, and procurement of,cloud computing resources for which a future requirement is anticipatedin accordance with an SLA.

Workloads layer 90 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation 91; software development and lifecycle management 92; virtualclassroom education delivery 93; data analytics processing 94;transaction processing 95; and cluster computing environment 96.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

It is understood in advance that although this disclosure includes adetailed description on cloud computing, implementation of the teachingsrecited herein are not limited to a cloud computing environment. Rather,embodiments of the present invention are capable of being implemented inconjunction with any other type of computing environment now known orlater developed.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g. networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds). A cloud computing environment is serviceoriented with a focus on statelessness, low coupling, modularity, andsemantic interoperability. At the heart of cloud computing is aninfrastructure comprising a network of interconnected nodes.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A computer program product for generating adigest for each data partition in order to process more than one datastream comprising: one or more computer readable storage media andprogram instructions stored on the one or more computer readable storagemedia, the program instructions comprising: program instructions toreceive first and second data partitions that include first and secondportions of data, respectively, from a first of a plurality of datastreams in a cluster computing environment, wherein the programinstructions to receive the first and the second data partition thatincludes the first and the second portion of data, respectively, fromthe first of the plurality of data streams comprise: programinstructions to buffer for a first predefined time interval, the firstand second portion of data from the first of the plurality of datastreams into a first and second batch interval, respectively, whereinthe first batch interval is buffered before the second batch interval;program instructions to define a discretized stream including the firstand second batch interval, wherein the discretized stream comprises aresilient distributed dataset (RDD) representing a sequence of dataincluding serializable data partitions to perform in-memory computationson large clusters in a fault-tolerant manner; and program instructionsto receive the discretized stream including the first and second batchintervals representing the first and second portion of data from thefirst of the plurality of data streams, respectively; programinstructions to store in a first storage location of the clustercomputing environment, a first set of metadata for the first of theplurality of data streams; program instructions to generate a first andsecond digest for the first and second data partition based on thestored first storage location of the cluster computing environment,respectively, wherein each of the first and second digests include adata structure that points to the first set of metadata: programinstructions to transmit the first and second data partitions includingthe first and second digest, respectively, to one or more nodes of acluster computing environment, wherein the one or more nodes are capableof accessing the first storage location via the data structure thatpoints to the first storage location, and wherein the accessing of thefirst storage location provides processing information; and programinstructions to process the first and second data partition using theprocessing information.
 2. The computer program product of claim 1,wherein the program instructions stored on the one or more computerreadable storage media further comprise: program instructions to receivea third and a fourth data partition that includes a first and a secondportion of data from a second of the plurality of data streams,respectively; program instructions to store in a second storage locationof the distributed storage system, a first set of metadata for thesecond of the plurality of data streams; program instructions to createa third and fourth digest for the third and fourth data partition,respectively, wherein each of the third and fourth digests include adata structure that points to the second storage location; programinstructions to transmit the third and fourth data partition includingthe third and fourth digest, respectively, to the one or more nodes ofthe cluster computing environment, wherein the one or more nodes arecapable of accessing the second storage location via the data structurethat points to the second storage location, and wherein the accessing ofthe second storage location provides processing information; and programinstructions to process the third and fourth partition using theprocessing information.
 3. The computer program product of claim 1,wherein the cluster computing environment is a Spark® streamingcomputing environment, available from Apache Software Foundation.
 4. Thecomputer program product of claim 1, wherein the first and second digestinclude additional data partition information for the first and seconddata partition, respectively.
 5. The computer program product of claim1, wherein the first set of metadata for the first of the plurality ofdata streams include: a name of the first of the plurality of datastreams, a location of the first of the plurality of data streams, anowner of the first of the plurality of data streams, a size of the firstof the plurality of data streams, and the processing information, andwherein the first set of metadata is metadata for a source of the firstof the plurality of data streams including a file name.
 6. The computerprogram product of claim 3, wherein the program instructions stored onthe one or more computer readable storage media further comprise:program instructions to generate a resilient distributed dataset from areceived batch interval representing a portion of data from one of theplurality of data streams; and program instructions to buffer for asecond predefined time interval, a subset of the portion of data fromone of the plurality of data streams as a first data partition.
 7. Acomputer system for generating a digest for each data partition in orderto process more than one data stream comprising: one or more computerprocessors; one or more computer readable storage media; programinstructions stored on the computer readable storage media for executionby at least one of the one or more processors, the program instructionscomprising: program instructions to receive first and second datapartitions that include first and second portions of data, respectively,from a first of a plurality of data streams in a cluster computingenvironment, wherein the program instructions to receive the first andthe second data partition that includes the first and the second portionof data, respectively, from the first of the plurality of data streamscomprise: program instructions to buffer for a first predefined timeinterval, the first and second portion of data from the first of theplurality of data streams into a first and second batch interval,respectively, wherein the first batch interval is buffered before thesecond batch interval; program instructions to define a discretizedstream including the first and second batch interval, wherein thediscretized stream comprises a resilient distributed dataset (RDD)representing a sequence of data including serializable data partitionsto perform in-memory computations on large clusters in a fault-tolerantmanner; and program instructions to receive the discretized streamincluding the first and second batch intervals representing the firstand second portion of data from the first of the plurality of datastreams, respectively; program instructions to store in a first storagelocation of the cluster computing environment, a first set of metadatafor the first of the plurality of data streams; program instructions togenerate a first and second digest for the first and second datapartition based on the stored first storage location of the clustercomputing environment, respectively, wherein each of the first andsecond digests include a data structure that points to the first set ofmetadata; program instructions to transmit the first and second datapartitions including the first and second digest, respectively, to oneor more nodes of a cluster computing environment, wherein the one ormore nodes are capable of accessing the first storage location via thedata structure that points to the first storage location, and whereinthe accessing of the first storage location provides processinginformation; and program instructions to process the first and seconddata partition using the processing information.
 8. The computer systemof claim 7, wherein the program instructions stored on the one or morecomputer readable storage media further comprise: program instructionsto receive a third and a fourth data partition that includes a first anda second portion of data from a second of the plurality of data streams,respectively; program instructions to store in a second storage locationof the distributed storage system, a first set of metadata for thesecond of the plurality of data streams; program instructions to createa third and fourth digest for the third and fourth data partition,respectively, wherein each of the third and fourth digests include adata structure that points to the second storage location; programinstructions to transmit the third and fourth data partition includingthe third and fourth digest, respectively, to the one or more nodes ofthe cluster computing environment, wherein the one or more nodes arecapable of accessing the second storage location via the data structurethat points to the second storage location, and wherein the accessing ofthe second storage location provides processing information; and programinstructions to process the third and fourth partition using theprocessing information.
 9. The computer system of claim 7, wherein thecluster computing environment is a Spark® streaming computingenvironment, available from Apache Software Foundation.
 10. The computersystem of claim 7, wherein the first and second digest includeadditional data partition information for the first and second datapartition, respectively.
 11. The computer system of claim 7, wherein thefirst set of metadata for the first of the plurality of data streamsinclude: a name of the first of the plurality of data streams, alocation of the first of the plurality of data streams, an owner of thefirst of the plurality of data streams, a size of the first of theplurality of data streams, and the processing information, and whereinthe first set of metadata is metadata for a source of the first of theplurality of data streams including a file name.